#include <iostream>
#include <string.h>
using namespace std;
int n,vis[100],mpt[100][100],flag=0;
void dfs(int v)
{
	vis[v]=-1;
	for(int i=0;i<n;i++)
	{
		if (flag)return;
		if(mpt[v][i]!=0)
		{
			if(vis[i]==0)
			{
				dfs(i);
			}
			else if(vis[i]==-1)
			{
				int j;
				for(j=0;j<n;j++)
					if(vis[j]!=-1) break;
				if(j==n) flag=1;
			}
		}
	}
	vis[v]=1;
}
int main()
{
	int m;
	cin>>n>>m;
	memset(vis,0,sizeof(vis));
	memset(mpt,0,sizeof(mpt));
	for(int i=0;i<m;i++)
	{
		int x,y;
		cin>>x>>y;
		mpt[x][y]=1;
	}
	dfs(0);
	if(flag)cout<<"yes";
	else cout<<"no";
	return 0;
}